#include "head.h"

// gcc main.c -o exec -lssl -lcrypto -lmysqlclient
//int isExitMd5(const char* MD5, MYSQL * mysql) {
//    char sql[4096] = {0};
//    strcpy(sql, "select * from virtual_file where md5 = '");
//    strcat(sql, MD5);
//    strcat(sql, "';");
//    int qret = mysql_query(mysql,sql);
//    if(qret != 0){
//        fprintf(stderr,"error 2:%s\n", mysql_error(mysql));
//        return -1;
//    }
//    MYSQL_RES *res = mysql_store_result(mysql);
//    unsigned long rows_res = mysql_num_rows(res);
//    if (rows_res == (unsigned long)0) {
//        return -1;
//    } else {
//        //MYSQL_ROW row;
//        //row = mysql_fetch_row(res);
//        //int resu = atoi(row[0]);
//        //id_now = resu;
//        return 0;
//    }
//}

int getFileMD5(const char *filename, char *MD5) {
    int fd = open(filename, O_RDONLY);
    MD5_CTX ctx;
    MD5_Init(&ctx);
    char buf[4096];
    while(1){
        bzero(buf,sizeof(buf));
        ssize_t sret = read(fd,buf,sizeof(buf));
        if(sret == 0){
            break;
        }
        MD5_Update(&ctx,buf,sret);
    }
    unsigned char md[16];//将要保存md5码16个字节的二进制数据
    MD5_Final(md,&ctx);
    for (int i = 0; i < 16; i++) {
        sprintf(&MD5[i * 2], "%02x", (unsigned int)md[i]);
    }

    return 0;
}


//int main(void)
//{
//    MYSQL * mysql = mysql_init(NULL);
//    MYSQL * ret = mysql_real_connect(mysql,"localhost","root","123456","49test",0,NULL,0);
//    if(ret == NULL){
//        fprintf(stderr,"error:%s\n", mysql_error(mysql));
//        return -1;
//    }
//    char MD5[100] = {0};
//    char filename[] = "file1";
//    getFileMD5(filename, MD5);
//    puts(MD5);
//    int isExit = isExitMd5(MD5, mysql);
//    printf("isExit = %d\n", isExit);
//    mysql_close(mysql);
//    return 0;
//}
